using System.Collections.Generic;
using System.Threading.Tasks;
using ERP.Common.Results;
using ERP.ERPSystem.WarehouseManagement.Dto;
using Volo.Abp.Application.Services;

namespace ERP.ERPSystem.WarehouseManagement
{
    /// <summary>
    /// 节假日设置服务接口
    /// </summary>
    public interface IHolidaysSetServices : IApplicationService
    {
        /// <summary>
        /// 获取分页列表
        /// </summary>
        /// <param name="query">查询条件</param>
        /// <returns>分页结果</returns>
        Task<APIResult<HolidaysSetPagedResult>> GetPagedListAsync(HolidaysSetQueryDto query);

        /// <summary>
        /// 根据ID获取详情
        /// </summary>
        /// <param name="id">主键ID</param>
        /// <returns>详情数据</returns>
        Task<APIResult<HolidaysSetDto>> GetByIdAsync(int id);

        /// <summary>
        /// 创建节假日设置
        /// </summary>
        /// <param name="createDto">创建数据</param>
        /// <returns>创建结果</returns>
        Task<APIResult<HolidaysSetDto>> CreateAsync(HolidaysSetCreateDto createDto);

        /// <summary>
        /// 更新节假日设置
        /// </summary>
        /// <param name="updateDto">更新数据</param>
        /// <returns>更新结果</returns>
        Task<APIResult<HolidaysSetDto>> UpdateAsync(HolidaysSetUpdateDto updateDto);

        /// <summary>
        /// 删除节假日设置
        /// </summary>
        /// <param name="id">主键ID</param>
        /// <returns>删除结果</returns>
        Task<OperationResult> DeleteAsync(int id);

        /// <summary>
        /// 批量删除节假日设置
        /// </summary>
        /// <param name="ids">主键ID集合</param>
        /// <returns>删除结果</returns>
        Task<OperationResult> BatchDeleteAsync(List<int> ids);

        /// <summary>
        /// 获取指定年月的节假日设置
        /// </summary>
        /// <param name="year">年份</param>
        /// <param name="month">月份</param>
        /// <returns>节假日列表</returns>
        Task<APIResult<List<HolidaysSetDto>>> GetByYearMonthAsync(int year, int month);
    }
} 